from bs4 import BeautifulSoup
import re

html_doc = """  
<html><head><title>网站标题</title></head>  
<body>  
<p class="title"><b>标题</b></p>  
<p class="story">故事一：<a href="http://example.com/1" class="sister" id="link1">链接一</a>，  
故事二：<a href="http://example.com/2" class="sister" id="link2">链接二</a>。</p>  
<p class="story">...</p>  
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 查找所有的 <p> 标签
p_tags = soup.find_all('p')
for tag in p_tags:
    print(tag)

# 查找所有类名为 "sister" 的元素
sister_elements = soup.find_all(class_='sister')
for element in sister_elements:
    print(element)

# 查找 id 为 "link1" 的元素
link1_element = soup.find(id='link1')
print(link1_element)

# 查找所有具有 href 属性的元素
href_elements = soup.find_all(attrs={'href': True})
for element in href_elements:
    print(element)

# 查找所有 href 属性值为 "http://example.com/1" 的元素
specific_href_elements = soup.find_all(attrs={'href': 'http://example.com/1'})
for element in specific_href_elements:
    print(element)

# 查找所有既是 <a> 标签，类名又为 "sister" 的元素
a_sister_elements = soup.find_all('a', class_='sister')
for element in a_sister_elements:
    print(element)

# 查找所有以 "p" 开头的标签
p_like_tags = soup.find_all(re.compile("^p"))
for tag in p_like_tags:
    print(tag.name)

# 查找所有的 <p> 标签，并在其中继续查找 <a> 标签
p_tags = soup.find_all('p')
for p in p_tags:
    a_tags = p.find_all('a')
    for a in a_tags:
        print(a)

# 查找所有 <a> 标签，并打印它们的 href 属性和文本内容
a_tags = soup.find_all('a')
for a in a_tags:
    href = a.get('href')
    text = a.get_text()
    print(f"href: {href}, text: {text}")